/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tk.eigh.ksvg.component.filter;

import ksvg.core.SVGFilter;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFComponent;
import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFProperty;
import tk.eigh.ksvg.types.SVGNumber;

/**
 *
 * @author nt
 */
@JSFComponent(name = "svg:DiffuseLighting",
type = "tk.eigh.svg.DiffuseLighting",
family = "filter.DiffuseLighting",
clazz = "ksvg.filter.DiffuseLighting",
tagClass = "ksvg.tags.filter.DiffuseLightingTag",
defaultRendererType = "filter.SVGDiffuseLightingRenderer")
public abstract class AbstractDiffuseLighting extends SVGFilter implements _LightingColorAware{

    /**
     * surfaceScale = "<a
     * href="http://www.w3.org/TR/SVG/types.html#DataTypeNumber">&lt;number&gt;</a>"height
     * of surface when A<sub>in</sub> = 1.<br/> If the attribute is not
     * specified, then the effect is as if a value of 1 were specified.<br/><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>:
     * yes.
     */
    @JSFProperty
    public abstract SVGNumber getSurfaceScale();

    /**
     * diffuseConstant = "<a
     * href="http://www.w3.org/TR/SVG/types.html#DataTypeNumber">&lt;number&gt;</a>"kd
     * in Phong lighting model. In SVG, this can be any non-negative
     * number.<br/> If the attribute is not specified, then the effect is as if
     * a value of 1 were specified.<br/><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>:
     * yes.
     */
    @JSFProperty
    public abstract SVGNumber getDiffuseConstant();

    /**
     * kernelUnitLength = "<a
     * href="http://www.w3.org/TR/SVG/types.html#DataTypeNumberOptionalNumber">&lt;number-optional-number&gt;</a>"The
     * first number is the &lt;dx&gt; value. The second number is the &lt;dy&gt;
     * value. If the &lt;dy&gt; value is not specified, it defaults to the same
     * value as &lt;dx&gt;. Indicates the intended distance in current filter
     * units (i.e., units as determined by the value of attribute <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementPrimitiveUnitsAttribute">‘primitiveUnits’</a>)
     * for
     * <code>dx</code> and
     * <code>dy</code>, respectively, in the <a
     * href="http://www.w3.org/TR/SVG/filters.html#SurfaceNormalCalculations">surface
     * normal calculation formulas</a>. By specifying value(s) for <a
     * href="http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingKernelUnitLengthAttribute">‘kernelUnitLength’</a>,
     * the kernel becomes defined in a scalable, abstract coordinate system. If
     * <a
     * href="http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingKernelUnitLengthAttribute">‘kernelUnitLength’</a>
     * is not specified, the
     * <code>dx</code> and
     * <code>dy</code> values should represent very small deltas relative to a
     * given
     * <code>(x,y)</code> position, which might be implemented in some cases as
     * one pixel in the intermediate image offscreen bitmap, which is a
     * pixel-based coordinate system, and thus potentially not scalable. For
     * some level of consistency across display media and user agents, it is
     * necessary that a value be provided for at least one of <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterResAttribute">‘filterRes’</a>
     * and <a
     * href="http://www.w3.org/TR/SVG/filters.html#feDiffuseLightingKernelUnitLengthAttribute">‘kernelUnitLength’</a>.
     * Discussion of intermediate images are in the <a
     * href="http://www.w3.org/TR/SVG/filters.html#Introduction">Introduction</a>
     * and in the description of attribute <a
     * href="http://www.w3.org/TR/SVG/filters.html#FilterElementFilterResAttribute">‘filterRes’</a>.<br/>
     * A negative or zero value is an error.<br/><a
     * href="http://www.w3.org/TR/SVG/animate.html#Animatable">Animatable</a>:
     * yes.
     */
    @JSFProperty
    public abstract String getKernelUnitLength();
}